/**
 * 
 */
package com.wolfpire.proms.service;

import java.util.Map;

import com.wolfpire.proms.model.Task;
import com.wolfpire.proms.model.TaskPlan;
import com.wolfpire.system.common.EasyuiPage;
import com.wolfpire.system.common.Page;
import com.wolfpire.system.common.base.service.IBaseHibernateService;
import com.wolfpire.system.model.User;

/**
 * 任务业务层接口
 * @author lihd
 *
 */
public interface TaskService extends IBaseHibernateService<Task, Long> {
	
	/**
	 * 任务列表接口
	 * @param page
	 * @param filterTask
	 * @return
	 */
	public Page<Task> setPageDataList(Page<Task> page, Task filterTask);
	
	/**
	 * 逻辑删除
	 * @param id
	 */
	public void del(Long id);
	
	/**
	 * 获取带有项目指标信息的任务
	 * @param id
	 * @return
	 */
	public Task getProjectIndexInfoTask(Long id);
	
	/**
	 * 任务迁移
	 * @param id	任务主键Id
	 * @param projectIndexId	原属指标Id
	 * @param targetProjectIndexId	目标指标Id
	 */
	public void move(Long id, Long projectIndexId, Long targetProjectIndexId);
	
	/**
	 * 申请
	 * @param page
	 * @param filterTask
	 * @return
	 */
	public Page<Map<String, Object>> setPageApplyDataList(Page<Map<String, Object>> page, Task filterTask);
	
	/**
	 * 启动流程 
	 * @param user
	 * @param task
	 */
	public void startTaskWorkflow(User user, Task task);
	
	/**
	 * 待办
	 * @param page
	 * @param filterTask
	 * @return
	 */
	public Page<Map<String, Object>> setPageTodoDataList(EasyuiPage<Map<String, Object>> page, Task filterTask);
	
	/**
	 * 统计待办数量
	 * @param filterTask
	 * @return
	 */
	public int countTodoTasks(Task filterTask);
	
	/**
	 * 我的任务列表（发起 +参与的）
	 * @param page
	 * @param filterTask
	 * @return
	 */
	public Page<Map<String, Object>> setPageMyDataList(EasyuiPage<Map<String, Object>> page, Task filterTask);
	
	
	/**
	 * 作废任务
	 * @param user	当前用户
	 * @param id	任务Id
	 * @param instanceId	流程实例Id
	 */
	public void invalid(User user, Long id, Long instanceId);
}
